/*
 * Copyright (c)  2015~2020, xforceplus
 * All rights reserved.
 * Project:datacare-orm
 * Id: AbstractExecuteSqlManager.java   2020-10-11 00-22-15
 * Author: Evan
 */
package cn.datacare.orm.manager.impl;

import cn.datacare.orm.manager.ExecuteSqlManager;
import cn.datacare.orm.query.PageQuery;
import cn.datacare.orm.source.SQLReady;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * Title:
 * </p>
 * <p>
 * Description:
 * </p>
 * <p>
 * Copyright: 2015~2020
 * </p>
 * <p>
 * Company/Department: xforceplus
 * </p>
 *
 * @author Evan
 * <b>Creation Time:</b> 2020-10-11 00-22-15
 * @since V1.0
 */
public abstract class AbstractExecuteSqlManager extends AbstractInsertSqlManager implements ExecuteSqlManager {
    /**
     * 直接执行SQL
     *
     * @param sqlTemplate
     * @param clazz
     * @param params
     * @return List<T>
     */
    @Override
    public <T> List<T> execute(String sqlTemplate, Class<T> clazz, Object params) {
        return null;
    }

    /**
     * 直接执行sql查询语句，sql是模板
     *
     * @param sqlTemplate
     * @param clazz
     * @param params
     * @return List<T>
     */
    @Override
    public <T> List<T> execute(String sqlTemplate, Class<T> clazz, Map<String, Object> params) {
        return null;
    }

    /**
     * 直接执行sql模版语句，sql是模板
     *
     * @param sqlTemplate
     * @param clazz
     * @param params
     * @param start
     * @param size
     * @return
     */
    @Override
    public <T> List<T> execute(String sqlTemplate, Class<T> clazz, Map<String, Object> params, long start, long size) {
        return null;
    }

    /**
     * 直接执行sql模板查询，并获取指定范围的结果集
     *
     * @param sqlTemplate
     * @param clazz
     * @param params
     * @param start
     * @param size
     * @return
     */
    @Override
    public <T> List<T> execute(String sqlTemplate, Class<T> clazz, Object params, long start, long size) {
        return null;
    }

    /***
     *  sql 模板分页查询，记得使用page函数
     * @param sqlTemplate
     * @param clazz
     * @param pageQuery
     * @return
     */
    @Override
    public <T> PageQuery<T> executePageQuery(String sqlTemplate, Class<T> clazz, PageQuery<T> pageQuery) {
        return null;
    }

    /**
     * 直接执行sql更新，sql是模板
     *
     * @param sqlTemplate
     * @param params
     * @return int 更新行数
     */
    @Override
    public int executeUpdate(String sqlTemplate, Object params) {
        return 0;
    }

    /**
     * 直接更新sql，sql是模板
     *
     * @param sqlTemplate
     * @param params
     * @return int 更新行数
     */
    @Override
    public int executeUpdate(String sqlTemplate, Map<String, Object> params) {
        return 0;
    }

    @Override
    public <T> List<T> execute(SQLReady p, Class<T> clazz) {
        return null;
    }

    /**
     * 直接执行sql语句查询，sql语句已经是准备好的，采用preparedstatment执行
     *
     * @param sqlReady
     * @param clazz
     * @param pageQuery
     * @return
     */
    @Override
    public <T> PageQuery<T> execute(SQLReady sqlReady, Class<T> clazz, PageQuery<T> pageQuery) {
        return null;
    }

    /**
     * 直接执行sql语句，用于删除或者更新，sql语句已经是准备好的，采用preparedstatment执行
     *
     * @param p p
     * @return int
     */
    @Override
    public int executeUpdate(SQLReady p) {
        return 0;
    }
}
